# -*- coding: utf-8 -*-

# === SNS全体の設定情報管理用モデル
class GlobalSetting < ActiveRecord::Base
  validates :invite_mail_from, :notice_mail_from,
             :format => { :with => CommonUtils::REG_EXPS[:email_format] }
  
  # システム設定のデフォルト値をハッシュ形式で保持する。
  DEFAULTS = {:sns_name => "Regional SNS",
              :sns_description => "Description for this SNS",
              :invite_mail_from => "noreply@localhost.local",
              :notice_mail_from => "noreply@localhost.local"}

  @@instance = nil
  
  # === システム設定情報の取得用アクセサ
  # 任意のコントローラ・モデル・ビューからシステム設定をハッシュ形式で参照
  # できるようにするメソッド
  # シングルトンレコードを返すことで一意性を保証する。
  def self.[](value)
    return self.get_instance[value]
  end

  # === シングルトンレコードの取得
  def self.get_instance
    if self.all.size == 0
      return self.create(DEFAULTS)
    else
      @@instance = GlobalSetting.first unless @@instance
      return @@instance
    end
  rescue
    return DEFAULTS
  end

  # === システムに実装済みのテーマリストの取得
  # web-app-themesプラグインによって管理されるテーマの一覧をディレクトリから
  # 取得する
  def self.theme_list
    results = []
    path = File.join(Rails.root, "public", "stylesheets", "web-app-theme", "themes")
    Dir.foreach(path) do |item|
      next unless File.directory?(File.join(path, item))
      next if item =~ /\A\./
      results << item
    end
    return results
  end
end
